#pragma once
#include "Headers.h"

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

namespace particleEditorCli {

	public ref class RenderWindowForm : public WeifenLuo::WinFormsUI::Docking::DockContent
	{
	public:
		RenderWindowForm(int id);
		
		RenderWindow*	mRw;
		Camera*			mCamera;
		SceneNode*		mTargetNode;
		SceneNode*		mCamNode;
		Viewport*		mVp;
		SceneManager*	mSceneMgr;
		
	protected:
		~RenderWindowForm();
		
	private: 
		System::Windows::Forms::PictureBox^		mPictureBox;
		System::ComponentModel::Container^		components;
		Point									mPrevMousePos;
		void InitializeComponent(void);

		//mouse events
		void OnMouseWheelCallback(Object^sender, MouseEventArgs^e);
		void OnMouseLeaveCallback(Object^sender, EventArgs^e);
		void OnMouseEnterCallback(Object^sender, EventArgs^e);
		void OnMouseUpCallback(Object^sender, MouseEventArgs^e);
		void OnMouseDownCallback(Object^sender, MouseEventArgs^e);
		void OnMouseDoubleClickCallback(Object^sender, MouseEventArgs^e);
		void OnMouseClickCallback(Object^sender, MouseEventArgs^e);
		void OnMouseMoveCallback(Object^sender, MouseEventArgs^e);

		//keyboard events
		void OnKeyDownCallback(Object^sender, KeyEventArgs^e);
		void OnKeyUpCallback(Object^sender, KeyEventArgs^e);
		void OnKeyPressCallback(Object^sender, KeyPressEventArgs^e);

	};
}
